package com.javacoo.xservice.base.support.swaparea.internal;

import com.javacoo.xservice.base.support.swaparea.SwapArea;
import com.javacoo.xservice.base.support.swaparea.SwapAreaHolder;

/**
 * ThreadLoca数据交换区Holder
 * <p>说明:</p>
 * <li></li>
 * @author DuanYong
 * @since 2017年6月30日上午10:11:06
 */
public class ThreadLocalSwapAreaHolder implements SwapAreaHolder {
	
	/**声明ThreadLocal变量*/		
	private static ThreadLocal<SwapArea> holder = new ThreadLocal<SwapArea>();
	
	/**
	 * 获取与当前线程上下文绑定的数据交换区实例
	 * <p>
	 * @return SwapArea 数据交换区实例
	 */
	@Override
	public SwapArea getCurrentSwapArea() {
		return holder.get();
	}

	/**
	 * 释放与当前线程上下文绑定的数据交换区实例
	 * <p>
	 */
	@Override
	public void removeCurrentSwapArea() {
		holder.remove();
	}

	/**
	 * 将数据交换区实例绑定到当前线程上下文
	 * <p>
	 * @param swapArea 数据交换区实例
	 */
	@Override
	public void setCurrentSwapArea(SwapArea swapArea) {
		holder.set(swapArea);
	}

}
